#ifndef __GAME_LEVEL_HPP__
#define __GAME_LEVEL_HPP__

#include <string>
#include <vector>
#include "../Mathematics/MVector3D.hpp"

class VirtualSector;
class LevelSector;

class GameLevel
{
public:
	GameLevel(std::string levelFileName, float fMargin, float fFOV = 45.0f);
	~GameLevel();


	float  calcMaxCamerY();
	float  calcMaxCameraFOV();

	const float&  getLvlDepth();
	const float&  getLvlWidth();
	const float&  getLvlHeight();
	MVector3D&    getPlayerStartPos();
	MVector3D&    getPlayerStopPos();
	MVector3D&    getCameraStartPos();
	MVector3D&    getCameraStopPos();

	VirtualSector*  calcVirtualSector();

private:
	bool     loadLVF(std::string lvfFileName);
	void     calcDepth();
	void     calcWidth();
	void     calcHeight();
	void     calcCameraStartPos();
	void     calcCameraStopPos();

	std::vector<LevelSector*>  m_sectors;

	float      m_fFOV;
	float      m_fMargin;
	float      m_fLvlDepth;
	float      m_fLvlHeight;
	float      m_fLvlWidth;
	MVector3D  m_camStartPos;
	MVector3D  m_camStopPos;
};

#endif //__GAME_LEVEL_HPP__

//EOF
